package com.lg.distributed.idempotence.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * 自定义注解 实现接口幂等
 * 1. 使用雪花算法生成全局唯一id
 * 2. redis set 实现防重表
 *
 * @author by Mr. Li 2020/12/10 17:20
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface AutoIdempotent {

    /**
     * 过期秒数,默认为5秒
     */
    int expire() default 10;

    /**
     * 保存到 redis 中的前缀
     *
     * @return
     */
    String prefix() default "";

    /**
     * 超时时间单位，默认为秒
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

    /**
     * Key的分隔符（默认 :）
     */
    String delimiter() default ":";
}
